package com.ruoyi.analyse.mapper;

import java.util.List;
import com.ruoyi.analyse.domain.QuestionAnalysis;
import org.apache.ibatis.annotations.Param;

/**
 * 问题分析Mapper接口
 *
 * @author ruoyi
 */
public interface QuestionAnalysisMapper
{
    /**
     * 查询问题分析
     *
     * @param analysisId 问题分析主键
     * @return 问题分析
     */
    public QuestionAnalysis selectQuestionAnalysisByAnalysisId(Long analysisId);

    /**
     * 查询问题分析列表
     *
     * @param questionAnalysis 问题分析
     * @return 问题分析集合
     */
    public List<QuestionAnalysis> selectQuestionAnalysisList(QuestionAnalysis questionAnalysis);

    /**
     * 新增问题分析
     *
     * @param questionAnalysis 问题分析
     * @return 结果
     */
    public int insertQuestionAnalysis(QuestionAnalysis questionAnalysis);

    /**
     * 修改问题分析
     *
     * @param questionAnalysis 问题分析
     * @return 结果
     */
    public int updateQuestionAnalysis(QuestionAnalysis questionAnalysis);

    /**
     * 删除问题分析
     *
     * @param analysisId 问题分析主键
     * @return 结果
     */
    public int deleteQuestionAnalysisByAnalysisId(Long analysisId);

    /**
     * 批量删除问题分析
     *
     * @param analysisIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteQuestionAnalysisByAnalysisIds(Long[] analysisIds);

    /**
     * 根据关键词和学科查询问题分析
     *
     * @param keyword 关键词
     * @param subject 学科
     * @return 问题分析
     */
    QuestionAnalysis selectQuestionAnalysisByKeywordAndSubject(@Param("keyword") String keyword, @Param("subject") String subject);

    /**
     * 获取热门关键词列表
     *
     * @param limit 限制数量
     * @return 热门关键词列表
     */
    public List<QuestionAnalysis> selectTopKeywords(@Param("limit") int limit, @Param("classId") Long classId);

    /**
     * 按学科统计问题数量
     *
     * @return 学科统计
     */
    public List<QuestionAnalysis> countQuestionsBySubject(Long classId);

    /**
     * 查询所有不同的问题类型
     *
     * @return 问题类型列表
     */
    public List<String> selectDistinctQuestionTypes(Long classId);

}
